package com.anzia.study_3.connections;

import ohos.rpc.*;

// 在Service Ability中实现
public class MyRemote extends RemoteObject implements IRemoteBroker {

	// 用于一致校验发送方和接收方的请求
	private static final int COMMAND_PLUS = IRemoteObject.MIN_TRANSACTION_ID;
	private static final int ERR_OK = 0;    // 表示通信成功的code：0
	private static final int ERROR = -1;    // 出错的时候的code值

	public MyRemote() {
		super("My_Remote");
	}

	@Override
	public IRemoteObject asObject() {
		return this;
	}

	// 下面是最核心的方法，接受发起连接的端侧发送来的请求数据，并处理这些数据，返回响应

	// 在这里获得代理对象发送的数据
	@Override
	public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) throws RemoteException {
		// code和发送方不一致，在reply中返回错误码告知发送方
		if (code != COMMAND_PLUS) {
			reply.writeInt(ERROR);
			return false;
		}
		// 从data中读取数据
		int value1 = data.readInt();
		int value2 = data.readInt();
		// 进行加法操作
		int rs = value1 + value2;
		// 将成功码和结果写入reply中
		reply.writeInt(ERR_OK);
		reply.writeInt(rs);
		return true;
	}
}
